// authLogin.js
Page({
  data: {
    redirect: '', // 重定向页面
    phoneNumber: '',
    isGettingPhone: false,
    inputPhoneNumber: '', // 备用输入的手机号
    isInputMode: false // 是否使用输入手机号模式
  },

  onLoad: function(options) {
    // 获取重定向参数
    if (options && options.redirect) {
      this.setData({
        redirect: options.redirect
      });
    }
  },

  // 获取手机号并自动登录
  getPhoneNumber: function(e) {
    console.log('getPhoneNumber函数被调用，事件对象:', e);
    
    // 添加交互反馈
    wx.showToast({
      title: '正在处理授权请求...',
      icon: 'loading',
      duration: 2000
    });
    
    // 检查事件对象是否存在
    if (!e || !e.detail) {
      console.error('事件对象不存在或不完整');
      wx.showToast({
        title: '授权失败，请重试',
        icon: 'none'
      });
      return;
    }
    
    console.log('错误信息:', e.detail.errMsg);
    
    // 检查用户是否拒绝授权
    if (e.detail.errMsg === 'getPhoneNumber:fail user deny') {
      console.log('用户拒绝授权');
      wx.showToast({
        title: '请授权手机号以继续',
        icon: 'none'
      });
      return;
    }
    
    // 处理授权成功情况
    if (e.detail.errMsg === 'getPhoneNumber:ok') {
      console.log('授权成功，开始处理登录');
      
      this.setData({
        isGettingPhone: true
      });

      // 调用后端API进行登录
      wx.request({
        url: 'http://localhost:5000/api/user/login',
        method: 'POST',
        data: {
          phone: '138****6789' // 实际应用中应该从e.detail中获取真实手机号
        },
        success: (res) => {
          console.log('登录API调用成功:', res.data);
          
          if (res.data.success) {
            this.setData({
              phoneNumber: '138****6789',
              isGettingPhone: false
            });
            
            // 直接执行登录逻辑
            this.confirmLogin(res.data.data);
          } else {
            console.error('登录失败:', res.data.message);
            this.setData({ isGettingPhone: false });
            wx.showToast({
              title: res.data.message || '登录失败',
              icon: 'none'
            });
          }
        },
        fail: (err) => {
          console.error('登录API调用失败:', err);
          this.setData({ isGettingPhone: false });
          wx.showModal({
            title: '登录失败',
            content: '网络错误，是否尝试手动输入手机号登录？',
            success: (res) => {
              if (res.confirm) {
                this.setData({ isInputMode: true });
              }
            }
          });
        }
      });
    } else {
      // 其他错误情况
      console.error('授权出错:', e.detail.errMsg);
      wx.showModal({
        title: '授权失败',
        content: '微信手机号授权失败，是否尝试手动输入手机号登录？',
        success: (res) => {
          if (res.confirm) {
            this.setData({ isInputMode: true });
          }
        }
      });
    }
  },

  // 切换到手动输入模式
  switchToInputMode: function() {
    this.setData({ isInputMode: true });
  },

  // 切换回微信授权模式
  switchToWechatMode: function() {
    this.setData({
      isInputMode: false,
      inputPhoneNumber: ''
    });
  },

  // 输入手机号变化
  onPhoneInput: function(e) {
    this.setData({
      inputPhoneNumber: e.detail.value
    });
  },

  // 使用输入的手机号登录
  confirmInputPhoneLogin: function() {
    const phone = this.data.inputPhoneNumber;
    
    // 简单的手机号格式校验
    if (!phone || !/^1[3-9]\d{9}$/.test(phone)) {
      wx.showToast({
        title: '请输入正确的手机号',
        icon: 'none'
      });
      return;
    }

    // 模拟登录请求
    wx.showLoading({
      title: '登录中...',
    });

    // 模拟登录成功
    setTimeout(() => {
      wx.hideLoading();
      
      try {
        // 存储登录状态
        wx.setStorageSync('isLoggedIn', true);
        wx.setStorageSync('userInfo', { phoneNumber: phone });
        
        wx.showToast({
          title: '登录成功',
          icon: 'success',
          duration: 2000
        });

        // 延迟一小段时间再跳转，确保提示框显示完成
        setTimeout(() => {
          // 处理重定向逻辑
          if (this.data.redirect) {
            console.log('重定向参数:', this.data.redirect);
            // 根据redirect参数跳转到相应页面
            const redirectUrlMap = {
              'questionnaire': '/pages/thyroidQuestionnaire/thyroidQuestionnaire',
              'photoAssessment': '/pages/photoAssessment/photoAssessment',
              'report': '/pages/report/report'
            };
            
            // 获取目标页面URL
            const targetUrl = redirectUrlMap[this.data.redirect] || '/pages/index/index';
            console.log('目标URL:', targetUrl);
            
            // 判断页面类型，使用不同的跳转方式
            if (targetUrl === '/pages/index/index' || 
                targetUrl === '/pages/thyroidQuestionnaire/thyroidQuestionnaire' || 
                targetUrl === '/pages/report/report') {
              // 对于tabBar页面，使用switchTab
              wx.switchTab({
                url: targetUrl,
                success: () => {
                  console.log('switchTab成功');
                },
                fail: (err) => {
                  console.error('switchTab失败:', err);
                  // 如果失败，尝试使用navigateTo
                  wx.navigateTo({
                    url: targetUrl
                  });
                }
              });
            } else {
              // 对于非tabBar页面，使用navigateTo
              wx.navigateTo({
                url: targetUrl,
                success: () => {
                  console.log('navigateTo成功');
                },
                fail: (err) => {
                  console.error('navigateTo失败:', err);
                  wx.showToast({
                    title: '登录成功，请手动选择功能', 
                    icon: 'none'
                  });
                }
              });
            }
          } else {
            // 没有重定向参数，返回上一页或跳转到首页
            if (getCurrentPages().length > 1) {
              wx.navigateBack();
            } else {
              wx.switchTab({
                url: '/pages/index/index'
              });
            }
          }
        }, 1000);
      } catch (error) {
        console.error('登录过程中发生错误:', error);
        wx.showToast({
          title: '登录失败，请重试',
          icon: 'none'
        });
      }
    }, 1500);
  },

  // 使用当前手机号登录
  confirmLogin: function(userData) {
    console.log('confirmLogin函数被调用');
    
    if (!userData || !userData.phone) {
      console.error('用户数据或手机号为空，无法登录');
      wx.showToast({
        title: '请先获取手机号',
        icon: 'none'
      });
      return;
    }

    console.log('准备登录，用户数据:', userData);
    
    // 存储登录状态
    wx.setStorageSync('isLoggedIn', true);
    wx.setStorageSync('userInfo', {
      id: userData.id,
      phone: userData.phone,
      nickname: userData.nickname,
      avatar: userData.avatar
    });
    console.log('登录状态和用户信息已存储');
    
    wx.showToast({
      title: '登录成功',
      icon: 'success',
      duration: 1000
    });
    
    // 处理重定向逻辑
    if (this.data.redirect) {
      console.log('重定向参数:', this.data.redirect);
      const redirectUrlMap = {
        'questionnaire': '/pages/thyroidQuestionnaire/thyroidQuestionnaire',
        'photoAssessment': '/pages/photoAssessment/photoAssessment',
        'report': '/pages/report/report'
      };
      
      const targetUrl = redirectUrlMap[this.data.redirect] || '/pages/index/index';
      console.log('目标URL:', targetUrl);
      
      // 对于问卷评估页面，直接使用switchTab
      if (targetUrl === '/pages/thyroidQuestionnaire/thyroidQuestionnaire') {
        console.log('准备跳转到问卷评估页面');
        wx.switchTab({
          url: targetUrl,
          success: () => {
            console.log('switchTab到问卷评估页面成功');
          },
          fail: (err) => {
            console.error('switchTab失败:', err);
            // 失败时立即尝试使用navigateTo
            wx.navigateTo({
              url: targetUrl,
              success: () => {
                console.log('navigateTo到问卷评估页面成功');
              },
              fail: (navErr) => {
                console.error('navigateTo也失败:', navErr);
                wx.showToast({
                  title: '登录成功，但跳转失败，请手动进入问卷', 
                  icon: 'none'
                });
              }
            });
          }
        });
      } else if (targetUrl === '/pages/index/index' || targetUrl === '/pages/report/report') {
        // 其他tabBar页面
        wx.switchTab({ url: targetUrl });
      } else {
        // 非tabBar页面
        wx.navigateTo({ url: targetUrl });
      }
    } else {
      // 没有重定向参数，直接返回首页
      wx.switchTab({ url: '/pages/index/index' });
    }
  },

  // 不允许登录，返回首页
  cancelLogin: function() {
    wx.switchTab({
      url: '/pages/index/index'
    });
  }
});